package com.zp.self.module.level_4_算法练习.数据结构.二叉树.平衡二叉树;

import org.junit.Test;

/**
 * @author ：by Zeng Peng
 * @date ：Created 2022/6/2 22:00
 * @description ：查找节点
 */
public class 平衡二叉树_查找 {

    @Test
    public void search(){
        int[] arr = new int[]{1, 4, 5, 6, 7, 10, 9, 8, 23, 2, 13, 32, 321, 32, 321, 312, 321, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 3, 23, 2};
        AvlNode node = 平衡二叉树_插入_构建.buildAVL(arr);
        //查找：二叉树中是否存在某个数
        for (int i = 0; i < 10; i++) {
            System.out.println(i+"是否存在："+(search(node,i)!=null));
        }
    }

    /**
     * Description: 查询数据是否存在 -- 二分查找 O(logn)
     */
    public static AvlNode search(AvlNode node, int num) {
        if (node == null) return null;
        if (num > node.data) {
            return search(node.rchild, num);
        } else if (num < node.data) {
            return search(node.lchild, num);
        } else
            return node;
    }
}
